package com.sunelec.pojo;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: 吴遵明
 * @Description: 自定义分页
 * @Date: Create in 2018/05/15
 * @Modified By:
 */
public class PageExample<T> {

    private List<T> list;//内容
    private int pageNum;//当前页数
    private List<Integer> pageNumList;
    private int pageNums;//每次显示几页
    private int pageSize;//每页显示几个
    private int pageMax;//最多显示多少页

    //pageNums不能为0
    public PageExample(List<T> l, int pageNum, int pageSize, int pageNums) {
        if(pageNums == 0)   pageNums=1;
        if(pageNum <= 0)    pageNum=1;
        if(pageSize <= 0)   pageSize=1;
        list = new ArrayList<T>();
        pageNumList = new ArrayList<Integer>();
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.pageNums = pageNums;
        listAc(l);//设置list
        pageNumsAc();//设置pageNums
    }

    //设置list
    private void listAc(List<T> l) {
        if(l.size() % pageSize == 0)
            pageMax = l.size() / pageSize ;
        else
            pageMax = l.size() / pageSize + 1;

        if(pageNum > pageMax)   pageNum=pageMax;
        for(int i=0; i<pageSize; i++) {
            if(i+(pageNum-1)*pageSize >= l.size()) break;

            list.add(l.get(i+(pageNum-1)*pageSize));
        }

    }

    //设置pageNumList
    private void pageNumsAc() {
        int ban = pageNums / 2;

        if(pageNum <= ban || pageNum <= 0) {
            for(int i=1; i<=pageNums; i++) {
                pageNumList.add(i);
            }
            return;
        }
        if(pageNum >= pageMax - ban) {
            for(int i=pageMax-pageNums+1; i<=pageMax; i++) {
                pageNumList.add(i);
            }
            return;
        }

        for(int i=pageNum-ban; i<=pageNum+ban; i++) {
            pageNumList.add(i);
        }
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public List<Integer> getPageNumList() {
        return pageNumList;
    }

    public void setPageNumList(List<Integer> pageNumList) {
        this.pageNumList = pageNumList;
    }

    public int getPageNums() {
        return pageNums;
    }

    public void setPageNums(int pageNums) {
        this.pageNums = pageNums;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageMax() {
        return pageMax;
    }

    public void setPageMax(int pageMax) {
        this.pageMax = pageMax;
    }
}
